package tag

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"sola/common"
	"sola/db"
	"sola/utils"
)

func create(c *gin.Context) {
	var tag db.Tag
	if err := c.ShouldBind(&tag); err != nil {
		fmt.Println("ShouldBind", err)
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	tag.AuthorName = "Connor"
	tag.Changeable = true
	db.Creaete(&tag)
	utils.ResponseSuccess(c, &tag)
	return
}

func update(c *gin.Context) {
	var tag db.Tag
	if err := c.ShouldBind(&tag); err != nil {
		fmt.Println("ShouldBind", err)
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	db.Update(&tag)
	utils.ResponseSuccess(c, &tag)
	return
}

func list(c *gin.Context) {
	var baseSearchModel common.BaseSearchModel
	if err := c.ShouldBind(&baseSearchModel); err != nil {
		fmt.Println("ShouldBind", err)
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	if err := c.ShouldBindUri(&baseSearchModel); err != nil {
		fmt.Println("ShouldBind", err)
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	if baseSearchModel.UserId == "" {
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	data := make(map[string]interface{})
	count := db.CountTag(&baseSearchModel)
	tags := db.GetTagList(&baseSearchModel)
	data["total"] = count
	data["items"] = tags
	fmt.Println(tags)
	utils.ResponseSuccess(c, data)
	return
}

func delete(c *gin.Context) {
	var tag db.Tag
	if err := c.ShouldBindUri(&tag); err != nil {
		fmt.Println("ShouldBind", err)
		utils.ResponseError(c, utils.ErrCodeParameter)
		return
	}
	db.Delete(&tag)
	utils.ResponseSuccess(c, &tag)
	return
}
